package com.zishuimuyu.trans.factory;

import com.zishuimuyu.trans.Translator;
import com.zishuimuyu.trans.exception.DupIdException;

import java.net.URISyntaxException;

/**
 * 最终的翻译器工厂类，继承自 AbstractTranslatorFactory 类。
 * 该类用于创建和管理翻译器实例，通过 ID 来获取对应的翻译器。
 */
final public class TranslatorFactory extends AbstractTranslatorFactory {

    /**
     * 构造函数，调用父类的构造函数来初始化翻译器。
     *
     * @throws ClassNotFoundException 如果在初始化过程中找不到指定的类
     * @throws InstantiationException 如果在实例化类时发生错误
     * @throws IllegalAccessException 如果在访问类的构造函数或方法时发生非法访问
     * @throws DupIdException         如果翻译器 ID 重复
     * @throws URISyntaxException     如果在处理 URI 时发生语法错误
     */
    public TranslatorFactory() throws ClassNotFoundException, InstantiationException, IllegalAccessException, DupIdException, URISyntaxException {
        // 调用父类的构造函数进行初始化
        super();
    }

    /**
     * 重写父类的 get 方法，根据给定的 ID 获取对应的翻译器实例。
     *
     * @param id 翻译器的唯一标识符
     * @return 与给定 ID 对应的翻译器实例，如果没有找到则返回 null
     */
    @Override
    public Translator get(String id) {
        // 从翻译器映射中获取对应的翻译器实例
        return translatorMap.get(id);
    }

}

